package 
{
	//{ imports omitted...
	import com.furusystems.logging.slf4as.constants.Levels;
	import com.furusystems.logging.slf4as.constants.PatternTypes;
	import com.furusystems.logging.slf4as.global.debug;
	import com.furusystems.logging.slf4as.ILogger;
	import com.furusystems.logging.slf4as.Logging;
	import flash.display.Loader;
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.events.Event;
	//}
	public class Tests extends Sprite 
	{
		private const L:ILogger = Logging.getLogger(Tests); //First, create a logger object associated with this class
		public function Tests():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			
			//To log messages, we call specialized logging methods on the logger object		
			L.debug("Hello debug"); //These are general debugging messages (your commonplace traces)
			L.info("Hello info"); //Slightly more important messages, for instance dealing with application status etc
			L.warn("Hello warn"); //Something untowards has happened, but it's not important
			L.error("Hello error"); //Something bad has happened! But the application can recover...
			L.fatal("Hello fatal"); //Something REALLY BAD has happened. It's game over for your app.
			
			// Typically you will use logger objects to log messages, but if you need to log system-wide events
			// that don't necessarily pertain to a specific class type, there are package level logging methods as well
			debug("Hello debug");
			
			Logging.setPatternType(PatternTypes.SLF);
			debug("Counting {} {} {}", 1, 2, 3); //'[Logging] DEBUG Counting 1 2 3'
		}
	}
	
}